package componentes;


import java.util.ArrayList;
import java.util.List;
import dto.*;

public class Competencia {
	
	private int id_usuario;
	private String estado;
	private String nombre;
	private String deporte;
	private List<String> lugares;
	private int disponibilidad;
	
	private Modalidad modalidad;
	
	
	
	private int cantDeSets;
	private int golesAfavor;
	private int puntosPorPartidoGanado;
	private int puntosPorPresentarse;
	
	private int empate;
	private int puntosEmpate;
	private String reglamento;
	
	private List<Participante> participantes;
	private Fixture fixture;
	
	private static int nInstancias =0;
	private int id_competencia;
	
	

	public Competencia(DTOcompetencia dtoCompe) { 
		id_usuario = dtoCompe.getId_usuario();
		id_competencia = nInstancias;
		nInstancias += 1;
	
	
		estado = dtoCompe.getEstado();
		nombre = dtoCompe.getNombre();
		
		deporte = dtoCompe.getDeporte();
		lugares = dtoCompe.getLugar();
		disponibilidad =  dtoCompe.getDisponibilidad();
		
		instanciarModalidad(dtoCompe);
	
	
		
		cantDeSets =  dtoCompe.getCantDeSets();
		golesAfavor =  dtoCompe.getGolesAfavor();
		puntosPorPartidoGanado  =  dtoCompe.getPuntosPorPartidoGanado();
		puntosPorPresentarse =  dtoCompe.getPuntosPorPresentarse();
		
		empate =  dtoCompe.getEmpate();
		puntosEmpate =  dtoCompe.getPuntosEmpate();
		reglamento =  dtoCompe.getReglamento();
		
		participantes = new ArrayList<Participante>();
		fixture = null;
		
		
	}
	
	
	private void instanciarModalidad(DTOcompetencia dtoCompetencia) {
	
		if(dtoCompetencia.getModalidad().equals("Liga")){
			modalidad=new Liga(dtoCompetencia.getEmpate(), dtoCompetencia.getPuntosEmpate(), dtoCompetencia.getPuntosPorPresentarse(), dtoCompetencia.getGolesAfavor(), dtoCompetencia.getPuntosPorPartidoGanado());
			
		}
		else if(dtoCompetencia.getModalidad().equals("Eliminatoria Simple")){
			modalidad=new EliminacionSimple();  
		}
		else if(dtoCompetencia.getModalidad().equals("Eliminatoria Doble")){
			modalidad=new EliminacionDoble();
		}
		
		modalidad.setTipo(dtoCompetencia.getModalidad());
		modalidad.setReglamento(dtoCompetencia.getReglamento());
		modalidad.setPuntuacion(dtoCompetencia.getPuntuacion(),dtoCompetencia.getGolesAfavor(), dtoCompetencia.getCantDeSets());
	}


	private void cargarLugares(List<String> listaDeLugares){
		for(int i=0; i<listaDeLugares.size();i++){
			lugares.add(listaDeLugares.get(i));
		}
	}


	public String getEstado() {
		return estado;
	}


	public String getNombre() {
		return nombre;
	}


	public String getDeporte() {
		return deporte;
	}


	public List<String> getLugares() {
		return lugares;
	}


	public int getDisponibilidad() {
		return disponibilidad;
	}


	public Modalidad getModalidad() {
		return modalidad;
	}


	public int getCantDeSets() {
		return cantDeSets;
	}


	public int getGolesAfavor() {
		return golesAfavor;
	}


	public int getPuntosPorPartidoGanado() {
		return puntosPorPartidoGanado;
	}


	public int getPuntosPorPresentarse() {
		return puntosPorPresentarse;
	}


	public boolean permiteEmpate(){
		if(empate==0){
			return false;
		}
		else{
			return true;
		}
	}

	public int getPuntosEmpate() {
		return puntosEmpate;
	}


	public String getReglamento() {
		return reglamento;
	}


	public List<Participante> getParticipantes() {
		return participantes;
	}


	public Fixture getFixture() {
		return fixture;
	}


	public static int getnInstancias() {
		return nInstancias;
	}


	public int getId_competencia() {
		return id_competencia;
	}
	
	public void setEstado(String estado){
		this.estado = estado;
	}
	
	public int getEmpate(){
		return empate;
		
	}
	public int getId_usuario(){
		return id_usuario;
	}


	public void setId_competencia(int id) {
		// TODO Auto-generated method stub
		id_competencia = id;
	}


	public void setFixture(Fixture fixture) {
		// TODO Auto-generated method stub
		this.fixture = fixture;
	}
	
}
